草庐IT

C++ 泛型 vector

全部标签

c# - 反射生成的类型和泛型

我与Reflection.Emit又经历了一个不愉快的时刻和类型管理。比如说,我有一个名为MyType的类型这是在动态生成的程序集中定义的。打电话MyType.GetMethods()结果NotSupportedException,这让我不得不编写自己的包装器和查找表集。然而,当我调用GetMethods()时,同样的事情发生了。或使用我自己的类型作为泛型参数的标准泛型类型的任何其他自省(introspection)方法:Tuple=>工作正常Tuple=>异常我可以从泛型类型定义中获取方法列表:typeof(Tuple但是,这些方法具有通用占位符而不是实际值(如T1、TResult等

C# 泛型自引用声明

我一直在阅读Albaharis的“C#5.0inANutshell”,我在泛型部分遇到过这个,据说它是合法的:classBarwhereT:Bar{...}虽然我已经仔细阅读了整章,但它对我来说毫无意义。我一点也听不懂。谁能用一些易于理解的命名来解释它,比如:classPersonwhereT:Person{...}以及这种用法合适且有用的真实应用场景? 最佳答案 意思是T必须继承自Person.这是在基类中创建特定于类型的方法或属性或参数的典型方法,特定于实际的后代。例如:publicabstractclassBasewhereT

c# - T 上的泛型约束同时是引用类型和值类型?

我无法理解通用约束的工作原理。我想我在这里遗漏了一些重要的东西。我在评论中附上了我的问题,如果您能提供一些解释,我们将不胜感激。//1stexample:classCwhereT:classwhereU:struct,T{}//Abovecodecompileswell,//OnfirstsightitlookslikeUmightbereferencetypeandvaluetype//atthesametime.TheonlyreasonIcanthinkof,isthatTmaybean//interfacewhichstructcanimplement,AmIcorrect?/

c# - 变体和开放泛型 IReadOnlyList

我试图理解为什么C#中有关变体和泛型的特定行为无法编译。classMatrixwhereTLine:ILine{TLine[]_lines;IReadOnlyListLines{get{return_lines;}}//doesnotcompileIReadOnlyListLines{get{return_lines;}}//compile}我不明白为什么这不起作用:_lines,属于TLine[]类型,工具IReadOnlyListIReadOnlyList是一个变体通用接口(interface),这意味着,据我所知,任何实现IReadOnlyList的东西可以用作IReadOnly

c# - .NET:静态方法的推断泛型类型

假设我有publicstaticListMap(Listinputs,Funcf){returninputs.ConvertAll((x)=>f(x));}privateintSquare(intx){returnx*x;}publicvoidRun(){varinputs=newList(newint[]{2,4,8,16,32,64,128,256,512,1024,2048});//thisdoesnotcompilevaroutputs=Map(inputs,Square);//thisisfinevaroutputs2=Map(inputs,Square);//thisisa

当 T 可以是数组时的 C# 泛型

我正在为第3方库编写一个C#包装器,它从硬件设备读取单个值和数组,但即使是一个值也总是返回一个对象[]数组。当我希望最终用户能够使用泛型接收数组或单个值时,这需要重复调​​用object[0]。我想使用泛型,以便被调用者可以通过以下方式使用包装器:MyWrappermw=newMyWrapper(...);floatvalue=mw.Value;//shouldreturnfloat;MyWrappermw=newMyWrapper(...);float[]values=mw.Value;//shouldreturnfloat[];在MyWrapper中,我目前的Value属性如下:p

c# - 为什么我不能对两个泛型类型参数使用协变?

考虑以下示例:classBase{}classDerived:Base{}classTest1{privateListm_X;publicIEnumerableGetEnumerable(){returnm_X;}}这编译得很好,因为IEnumerable在T中协变.但是,如果我做完全相同的事情,但现在使用泛型:classTest2whereTDerived:TBase{privateListm_X;publicIEnumerableGetEnumerable(){returnm_X;}}编译错误Cannotconvertexpressiontype'System.Collection

c# - 在调试器中查看 C# 泛型的类型

当我使用调试器将鼠标悬停在VisualStudio中的泛型类型上时,我没有获得当前类型,有没有一种方法可以显示它而无需转到即时窗口并键入?typeof(T)。姓名? 最佳答案 您可以通过查看显示运行时评估类型的顶行来查看调用堆栈窗口中的类型。也想向别人强调你的建议:goingtotheimmediatewindowandtyping?typeof(T).Name 关于c#-在调试器中查看C#泛型的类型,我们在StackOverflow上找到一个类似的问题: h

c# - 任何人都可以举一个很好的例子来说明泛型类的用途吗?

我们最近学习了C#中的泛型类,但我们的老师没有提到它们的用途。我真的找不到任何好的例子,如果有人帮助我,我会非常高兴:)你有没有制作自己的泛型类,你用它做什么?一些代码示例会让我和我的同学们非常高兴!请原谅糟糕的英语,我来自瑞典:)快乐的编程!抱歉-我想我可以把问题写得更好一些。我熟悉通用集合。我只是想知道您自己的泛型类可以用来做什么。感谢您提供MSDN链接,我在发布问题之前确实阅读了它们,但也许我错过了什么?我再看看! 最佳答案 通用集合集合泛型非常有用,因为它们允许编译时类型安全。这很有用,原因如下:检索值时不需要转换。这不仅有

c# - .Equals 上的 C# 泛型方法中的意外行为

为什么Equals方法返回的结果与泛型方法不同?我认为这里有一些我不明白的自动装箱。这是一个重现.net3.5或4.0行为的示例:staticvoidMain(string[]args){TimeZoneInfotzOne=TimeZoneInfo.Local;TimeZoneInfotzTwo=TimeZoneInfo.FindSystemTimeZoneById(tzOne.StandardName);Console.WriteLine(Compare(tzOne,tzTwo));Console.WriteLine(tzOne.Equals(tzTwo));}privatestat